package com.hxalex.simulationhandle.common;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

import java.io.InputStream;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Created by leaves on 2016/12/16.
 */

public class Constant {
    public static final int DIVIDE_UNIT = 1000 * 1000;
    public static final float DIVIDE_UNIT_FLOAT = 1000 * 1000;
    public static final int BUY_UP = 1;
    public static final int BUY_DOWN = 2;
    public static final String KLINE_TYPE_MINUTE = "minute";
    public static final String KLINE_TYPE_FIVE = "five";
    public static final String KLINE_TYPE_FIFTEEN = "fifteen";
    public static final String KLINE_TYPE_THIRTY = "thirty";
    public static final String KLINE_TYPE_SIXTY = "sixty";


    public static String formatPriceWithPercent(int price) {
        return price + "%";//format 返回的是字符串
    }

    public static String formatPrice(float price) {

//        DecimalFormat decimalFormat = new DecimalFormat("0.00");//构造方法的字符格式这里如果小数不足2位,会以0补足.
//
//        return decimalFormat.format(price);//format 返回的是字符串
        return floatNoDivide(String.valueOf(price));
    }

    public static String formatPrice(double price) {

//        DecimalFormat decimalFormat = new DecimalFormat("0.00");//构造方法的字符格式这里如果小数不足2位,会以0补足.
//
//        return decimalFormat.format(price);//format 返回的是字符串
        return floatDivide(String.valueOf(price));
    }

    public static String formatPriceNoDivide(double price) {

        DecimalFormat decimalFormat = new DecimalFormat("0.00");//构造方法的字符格式这里如果小数不足2位,会以0补足.

        return decimalFormat.format(price);//format 返回的是字符串
    }

    public static String formatPriceWithDivide(long price) {

//        DecimalFormat decimalFormat = new DecimalFormat("0.00");//构造方法的字符格式这里如果小数不足2位,会以0补足.
//
//        return decimalFormat.format((float) price / DIVIDE_UNIT_FLOAT);//format 返回的是字符串
        return floatDivide(String.valueOf(price));
    }

    public static String formatPriceWithDivide(double price) {

//        DecimalFormat decimalFormat = new DecimalFormat("0.00");//构造方法的字符格式这里如果小数不足2位,会以0补足.
//
//        return decimalFormat.format((float) price / DIVIDE_UNIT_FLOAT);//format 返回的是字符串
        return floatDivide(String.valueOf(price));
    }

    public static String formatPriceWithDivide(float price) {

//        DecimalFormat decimalFormat = new DecimalFormat("0.00");//构造方法的字符格式这里如果小数不足2位,会以0补足.
//
//        return decimalFormat.format(price / DIVIDE_UNIT_FLOAT);//format 返回的是字符串
        return floatDivide(String.valueOf(price));

    }

    public static String formatKLineTime(long time) {
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
        Date dt = new Date(time * 1000);
        return sdf.format(dt);
    }

    public static String floatDivide(String Value) {
        if (Value.equals("0") || Value.equals("0.0")) return "0.00";
        BigDecimal bigDecimal = new BigDecimal(String.valueOf(Value));
        BigDecimal decimal1 = new BigDecimal("1000000");
        String dv = String.valueOf((bigDecimal.doubleValue() / decimal1.doubleValue()));
        BigDecimal reslut = new BigDecimal(dv.toString()).setScale(2, BigDecimal.ROUND_DOWN);
        //设置浮点类型不以科学计数法,显示数值
        NumberFormat nf = NumberFormat.getInstance();
        DecimalFormat decimalFormat = new DecimalFormat("0.00");
        nf.setGroupingUsed(false);
        String format = nf.format(reslut);
        String format1 = decimalFormat.format(Double.valueOf(format));
        return format1;
    }

    public static String floatNoDivide(String Value) {
        if (Value.equals("0") || Value.equals("0.0")) return "0.00";
        BigDecimal bigDecimal = new BigDecimal(String.valueOf(Value));
        BigDecimal decimal1 = new BigDecimal("1");
        String dv = String.valueOf((bigDecimal.doubleValue() / decimal1.doubleValue()));
        BigDecimal reslut = new BigDecimal(dv.toString()).setScale(2, BigDecimal.ROUND_DOWN);
        //设置浮点类型不以科学计数法,显示数值
        NumberFormat nf = NumberFormat.getInstance();
        DecimalFormat decimalFormat = new DecimalFormat("0.00");
        nf.setGroupingUsed(false);
        String format = nf.format(reslut);
        String format1 = decimalFormat.format(Double.valueOf(format));
        return format1;
    }


    /**
     * 以最省内存的方式读取本地资源的图片 
     * @param context  上下文
     * @param resId 资源Id
     * @return 返回bitmap
     */
    public static Bitmap readBitMap(Context context, int resId){
        BitmapFactory.Options opt = new BitmapFactory.Options();
        //压缩编码 
        opt.inPreferredConfig = Bitmap.Config.RGB_565;
        //下面两个过时了，但没影响
        opt.inPurgeable = true;
        opt.inInputShareable = true;

        InputStream is = context.getResources().openRawResource(resId);
        return BitmapFactory.decodeStream(is,null,opt);
    }


    public static String floatNoDivideByFour(String Value) {
        if (Value.equals("0") || Value.equals("0.0")) return "0.0000";
        BigDecimal bigDecimal = new BigDecimal(String.valueOf(Value));
        BigDecimal decimal1 = new BigDecimal("1");
        String dv = String.valueOf((bigDecimal.doubleValue() / decimal1.doubleValue()));
        BigDecimal reslut = new BigDecimal(dv.toString()).setScale(4, BigDecimal.ROUND_DOWN);
        //设置浮点类型不以科学计数法,显示数值
        NumberFormat nf = NumberFormat.getInstance();
        DecimalFormat decimalFormat = new DecimalFormat("0.0000");
        nf.setGroupingUsed(false);
        String format = nf.format(reslut);
        String format1 = decimalFormat.format(Double.valueOf(format));
        return format1;
    }
//    public static int getShowTimeStamp(long time) {
//        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
//        Date dt = new Date(time * 1000);
//        dt.getHours()
//        return sdf.format(dt);
//    }
}
